package com.ruoyi.legal.domain;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 题目对象 tb_question
 * 
 * @author xiaoxiao
 * @date 2025-07-01
 */
public class Question extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 自增主键 */
    private Long id;

    /** 题目编号 */
    @Excel(name = "题目编号")
    private String questionNo;

    /** 所属分类编号 */
    @Excel(name = "所属分类编号")
    private String categoryNo;

    /** 题目类型(1单选 2多选 3判断 4填空 5简答) */
    @Excel(name = "题目类型(1单选 2多选 3判断 4填空 5简答)")
    private Long questionType;

    /** 题目内容 */
    @Excel(name = "题目内容")
    private String content;

    /** 选项(JSON格式，如{"A":"选项A","B":"选项B"}) */
    @Excel(name = "选项(JSON格式，如{\"A\":\"选项A\",\"B\":\"选项B\"})")
    private String options;

    /** 正确答案 */
    @Excel(name = "正确答案")
    private String correctAnswer;

    /** 答案解析 */
    @Excel(name = "答案解析")
    private String explanation;

    /** 难度(1-5) */
    @Excel(name = "难度(1-5)")
    private Long difficulty;

    /** 是否启用(1启用 0禁用) */
    @Excel(name = "是否启用(1启用 0禁用)")
    private Long isActive;

    /** 创建人 */
    private String creator;

    /** 更新人 */
    private String updater;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setQuestionNo(String questionNo) 
    {
        this.questionNo = questionNo;
    }

    public String getQuestionNo() 
    {
        return questionNo;
    }

    public void setCategoryNo(String categoryNo) 
    {
        this.categoryNo = categoryNo;
    }

    public String getCategoryNo() 
    {
        return categoryNo;
    }

    public void setQuestionType(Long questionType) 
    {
        this.questionType = questionType;
    }

    public Long getQuestionType() 
    {
        return questionType;
    }

    public void setContent(String content) 
    {
        this.content = content;
    }

    public String getContent() 
    {
        return content;
    }

    public void setOptions(String options) 
    {
        this.options = options;
    }

    public String getOptions() 
    {
        return options;
    }

    public void setCorrectAnswer(String correctAnswer) 
    {
        this.correctAnswer = correctAnswer;
    }

    public String getCorrectAnswer() 
    {
        return correctAnswer;
    }

    public void setExplanation(String explanation) 
    {
        this.explanation = explanation;
    }

    public String getExplanation() 
    {
        return explanation;
    }

    public void setDifficulty(Long difficulty) 
    {
        this.difficulty = difficulty;
    }

    public Long getDifficulty() 
    {
        return difficulty;
    }

    public void setIsActive(Long isActive) 
    {
        this.isActive = isActive;
    }

    public Long getIsActive() 
    {
        return isActive;
    }

    public void setCreator(String creator) 
    {
        this.creator = creator;
    }

    public String getCreator() 
    {
        return creator;
    }

    public void setUpdater(String updater) 
    {
        this.updater = updater;
    }

    public String getUpdater() 
    {
        return updater;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("questionNo", getQuestionNo())
            .append("categoryNo", getCategoryNo())
            .append("questionType", getQuestionType())
            .append("content", getContent())
            .append("options", getOptions())
            .append("correctAnswer", getCorrectAnswer())
            .append("explanation", getExplanation())
            .append("difficulty", getDifficulty())
            .append("isActive", getIsActive())
            .append("creator", getCreator())
            .append("createTime", getCreateTime())
            .append("updater", getUpdater())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
